<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    /* es6 里面可以使用 class 关键字 声明一个类（之前es5里面的构造函数），然后我们通过这个类可以实例化得到对象 */
    function People(name) {
        this.name = name;
    }

    const p1 = new People('mark');
    console.log(p1, typeof p1, p1 instanceof People);

    /* es6 的类的写法
        1. 对象属性
        2. 对象方法
        */
    class Person {
        /* constructor 是一个关键字，该方法里面是用于定义属性。
            1. constructor方法在被new的时候，会自动执行
            2. 我们会把属性的初始化操作放置在这里完成
        */
        constructor(name, age) {
            /* this.属性名称 = 初始化的值，值可以是外部传递，也可以是自己手工写死 */
            this.username = name;
            this.age = age;
            // 自己写死的属性 一般自己写死的属性代表是私有属性，外部不要访问（约定俗成）
            this._salary = 2000;

        }

        /* 定义方法 */
        say() {
            console.log(`${this.username} say hello`);
        }

    }
    const p2 = new Person('mark', 23);
    console.log(p2, typeof p2, p2 instanceof Person);
    console.log(p2.username);
    console.log(p2.age);
    p2.say();


</script>

</html>